/**
 * 
 */
package co.gov.medellin.sdep.sisdep.operativa.service;

import java.util.List;

import co.gov.medellin.sdep.sisdep.common.message.MessageDescriptorConstant;
import co.gov.medellin.sdep.sisdep.common.service.BaseService;
import co.gov.medellin.sdep.sisdep.model.HabitanteCalle;
import co.gov.medellin.sdep.sisdep.model.dao.impl.IHabitanteCalleDAOT;
import co.gov.medellin.sdep.sisdep.operativa.exception.HabitanteCalleException;
import co.gov.medellin.sdep.sisdep.operativa.exception.HabitanteCalleRuntimeException;
import co.gov.medellin.sdep.sisdep.operativa.exception.descriptor.HabitanteCalleMessageDescriptor;

/**
 * @author acespedes
 * 
 */
public class HabitanteCalleServiceImpl extends BaseService implements
		IHabitanteCalleService {

	// ----------------------------------------------------------------------
	// --- propiedades y constructores init()
	// ----------------------------------------------------------------------

	/**
	 * default serial version
	 */
	private static final long serialVersionUID = 1L;
	/** */
	private IHabitanteCalleDAOT habcraslinfDAO;

	/**
	 * 
	 */
	public HabitanteCalleServiceImpl() {
	}

	// ----------------------------------------------------------------------
	// --- propiedades y constructores end()
	// ----------------------------------------------------------------------

	// ----------------------------------------------------------------------
	// --- implementacion de metodos para acciones init()
	// ----------------------------------------------------------------------

	/**
	 * 
	 */
	public void insert(HabitanteCalle habcraslinf)
			throws HabitanteCalleException {
		try {
			habcraslinf.setUsuarioCrea(getPrincipalUser());
			// habcraslinf.setFechaCrea(new Date());
			getHabcraslinfDAO().insert(habcraslinf);
		} catch (Exception e) {
			Object[] infoError = { habcraslinf.getCodigo() };
			if (e.getCause().toString().indexOf("UNIQUE KEY") >= 0) {
				throw new HabitanteCalleException(
						new HabitanteCalleMessageDescriptor(
								MessageDescriptorConstant.UK_VIOLATION),
						infoError, e);
			} else {
				throw new HabitanteCalleException(
						new HabitanteCalleMessageDescriptor(
								MessageDescriptorConstant.SAVE), infoError, e);
			}
		}
	}

	/**
	 * 
	 */
	public final void update(HabitanteCalle habcraslinf)
			throws HabitanteCalleException {
		try {
			habcraslinf.setUsuarioModifica(getPrincipalUser());
			// habcraslinf.setFechaModifica(new Date());
			getHabcraslinfDAO().update(habcraslinf);
		} catch (Exception e) {
			Object[] infoError = { habcraslinf.getCodigo() };
			if (e.getCause().toString().indexOf("UNIQUE KEY") >= 0) {
				throw new HabitanteCalleRuntimeException(
						new HabitanteCalleMessageDescriptor(
								MessageDescriptorConstant.UK_VIOLATION),
						infoError, e);
			} else {
				throw new HabitanteCalleRuntimeException(
						new HabitanteCalleMessageDescriptor(
								MessageDescriptorConstant.UPDATE), infoError, e);
			}
		}
	}

	/**
	 * 
	 */
	public final void delete(HabitanteCalle habcraslinf)
			throws HabitanteCalleException {
		try {
			habcraslinf.setUsuarioModifica(getPrincipalUser());
			// habcraslinf.setFechaModifica(new Date());
			getHabcraslinfDAO().delete(habcraslinf);
		} catch (Exception e) {
			Object[] infoError = { habcraslinf.getCodigo() };
			throw new HabitanteCalleRuntimeException(
					new HabitanteCalleMessageDescriptor(
							MessageDescriptorConstant.DELETE), infoError, e);
		}
	}

	/**
	 * @return
	 * 
	 */
	public final List load(int start, int max, HabitanteCalle habcraslinf)
			throws HabitanteCalleException {
		try {
			// return getHabcraslInfDAO().getAllHabcraslInfPaginated(start, max,
			// criteria);
			return getHabcraslinfDAO().load(habcraslinf);
		} catch (Exception e) {
			Object[] infoError = null;
			throw new HabitanteCalleRuntimeException(
					new HabitanteCalleMessageDescriptor(
							MessageDescriptorConstant.RETRIEVE), infoError, e);
		}
	}

	/**
	 * 
	 */
	public final HabitanteCalle get(long id) throws HabitanteCalleException {
		try {
			return getHabcraslinfDAO().findByPrimaryKey(id);
		} catch (Exception e) {
			Object[] infoError = { new Long(id) };
			throw new HabitanteCalleRuntimeException(
					new HabitanteCalleMessageDescriptor(
							MessageDescriptorConstant.GET), infoError, e);
		}
	}

	// ----------------------------------------------------------------------
	// --- implementacion de metodos para acciones end()
	// ----------------------------------------------------------------------

	// ----------------------------------------------------------------------
	// --- getters and setters init()
	// ----------------------------------------------------------------------

	/**
	 * @param habcraslinfDAO
	 *            the habcraslinfDAO to set
	 */
	public void setHabcraslinfDAO(IHabitanteCalleDAOT habcraslinfDAO) {
		this.habcraslinfDAO = habcraslinfDAO;
	}

	/**
	 * @return the habcraslinfDAO
	 */
	public IHabitanteCalleDAOT getHabcraslinfDAO() {
		return habcraslinfDAO;
	}

	// ----------------------------------------------------------------------
	// --- getters and setters end()
	// ----------------------------------------------------------------------

}
